/* 
    判断回文字符串
*/

{
  /**
   * 使用js自带的方法
   * @param {*} str
   * @return {*}
   */
  const isPalindromicStr = (str) => {
    return str === str.split("").reverse().join("");
  };
  const str = "abcba";
  //   console.log(isPalindromicStr(str));
}

{
  /**
   * 遍历
   * @param {*} str
   * @return {*}
   */
  const isPalindromicStr = (str) => {
    let tempStr = "";
    for (let i = str.length - 1; i >= 0; i--) {
      tempStr += str.charAt(i);
    }
    return str === tempStr;
  };
  const str = "abcba";
  //   console.log(isPalindromicStr(str));
}

{
  /**
   * 双指针
   * @param {*} str
   * @return {*}
   */
  const isPalindromicStr = (str) => {
    if (!str.length) return true;
    let head = 0,
      rear = str.length - 1;
    while (head < rear) {
      if (str.charAt(head) !== str.charAt(rear)) return false;
      head++;
      rear--;
    }
    return true;
  };
  const str = "abcddcbac";
  // console.log(isPalindromicStr(str));
}

{
  /**
   * 使用递归方式
   * @param {*} str
   * @return {*}
   */
  const isPalindromicStr = (str) => {
    if (str.length <= 1) return true;
    // 每次比较完了字符给去掉, 用slice裁切掉
    return str.charAt(0) === str.charAt(str.length - 1)
      ? isPalindromicStr(str.slice(1, str.length - 1))
      : false;
  };
  const str = "abcddcba";
  console.log(isPalindromicStr(str));
}
